﻿

#include "zyDialogBox.h"


DarkMoonUI::zyDialogBox::zyDialogBox()
{
	SetMember(L"this", (LONG_PTR)this);
	SetMember(L"StartPosition", 开始位置_居中父窗口);
}
DarkMoonUI::zyDialogBox::~zyDialogBox()
{

}
bool DarkMoonUI::zyDialogBox::创建(HWND 参数_父窗口, const std::wstring& 参数_标题, POINT 参数_位置, POINT 参数_尺寸, int 参数_窗口风格, int 参数_扩展风格, BOOL 参数_不在任务栏显示, const std::wstring& 参数_类名)
{
	if (参数_窗口风格 == 0)
		参数_窗口风格 = WS_VISIBLE;
	HWND hwnd = 参数_父窗口;
	if (hwnd == 0 && 参数_不在任务栏显示)
		hwnd = CreateWindowEx(0, 参数_类名.c_str(), L"ShowTaskbar", WS_POPUP, 0, 0, 250, 110, nullptr, nullptr, zyEnv::getInstance().getHandle(), nullptr);
	if (HasMember(L"StartPosition")) {
		参数_位置 = 对话框单位到像素(参数_位置.x, 参数_位置.y);
		参数_尺寸 = 对话框单位到像素(参数_尺寸.x, 参数_尺寸.y);
		/* long lRet = GetDialogBaseUnits();
		int xBaseUnit = LOWORD(lRet);
		int yBaseUnit = HIWORD(lRet);
		参数_位置.x = 参数_位置.x * 4 / xBaseUnit;
		参数_位置.y = 参数_位置.y * 8 / yBaseUnit;
		参数_尺寸.x = 参数_尺寸.x * 4 / xBaseUnit;
		参数_尺寸.y = 参数_尺寸.y * 8 / yBaseUnit; */
		_开始位置到坐标(hwnd, (INT)GetMember(L"StartPosition"), 参数_尺寸, 参数_位置, true);
		参数_位置 = 像素到对话框单位(参数_位置.x, 参数_位置.y);
		参数_尺寸 = 像素到对话框单位(参数_尺寸.x, 参数_尺寸.y);
	}
	_SetWindowBorder((INT)GetMember(L"Border"), 参数_窗口风格, 参数_扩展风格);
	参数_位置.x = MulDiv(参数_位置.x, 96, zyEnv::getInstance().getDpiForWindow());
	参数_位置.y = MulDiv(参数_位置.y, 96, zyEnv::getInstance().getDpiForWindow());
	return _CreateDialog(hwnd, 参数_标题, 参数_位置, 参数_尺寸, 参数_窗口风格 | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 参数_扩展风格, 参数_类名);
}
INT_PTR DarkMoonUI::zyDialogBox::载入(HWND 参数_父窗口, const std::wstring& 参数_标题, POINT 参数_位置, POINT 参数_尺寸, int 参数_窗口风格, int 参数_扩展风格, BOOL 参数_不在任务栏显示, const std::wstring& 参数_类名)
{
	if (参数_窗口风格 == 0)
		参数_窗口风格 = WS_VISIBLE;
	HWND hwnd = 参数_父窗口;
	if (hwnd == 0 && 参数_不在任务栏显示)
		hwnd = CreateWindowEx(0, 参数_类名.c_str(), L"ShowTaskbar", WS_POPUP, 0, 0, 250, 110, nullptr, nullptr, zyEnv::getInstance().getHandle(), nullptr);
	if (HasMember(L"StartPosition")) {
		参数_位置 = 对话框单位到像素(参数_位置.x, 参数_位置.y);
		参数_尺寸 = 对话框单位到像素(参数_尺寸.x, 参数_尺寸.y);
		_开始位置到坐标(hwnd, (INT)GetMember(L"StartPosition"), 参数_尺寸, 参数_位置, true);
		参数_位置 = 像素到对话框单位(参数_位置.x, 参数_位置.y);
		参数_尺寸 = 像素到对话框单位(参数_尺寸.x, 参数_尺寸.y);
	}
	_SetWindowBorder((INT)GetMember(L"Border"), 参数_窗口风格, 参数_扩展风格);
	参数_位置.x = MulDiv(参数_位置.x, 96, zyEnv::getInstance().getDpiForWindow());
	参数_位置.y = MulDiv(参数_位置.y, 96, zyEnv::getInstance().getDpiForWindow());
	return _LoadDialog(hwnd, 参数_标题, 参数_位置, 参数_尺寸, 参数_窗口风格 | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 参数_扩展风格, 参数_类名);
}
bool DarkMoonUI::zyDialogBox::创建自资源(HWND 参数_父窗口, const std::wstring& 参数_资源ID, BOOL 参数_不在任务栏显示, const std::wstring& 参数_类名)
{
	HWND hwnd = 参数_父窗口;
	if (hwnd == 0 && 参数_不在任务栏显示)
		hwnd = CreateWindowEx(0, 参数_类名.c_str(), L"ShowTaskbar", WS_POPUP, 0, 0, 250, 110, nullptr, nullptr, zyEnv::getInstance().getHandle(), nullptr);
	return _CreateDialogFromRC(hwnd, 参数_资源ID, 参数_类名);
}
INT_PTR DarkMoonUI::zyDialogBox::载入自资源(HWND 参数_父窗口, const std::wstring& 参数_资源ID, BOOL 参数_不在任务栏显示, const std::wstring& 参数_类名)
{
	HWND hwnd = 参数_父窗口;
	if (hwnd == 0 && 参数_不在任务栏显示)
		hwnd = CreateWindowEx(0, 参数_类名.c_str(), L"ShowTaskbar", WS_POPUP, 0, 0, 250, 110, nullptr, nullptr, zyEnv::getInstance().getHandle(), nullptr);
	return _LoadDialogFromRC(hwnd, 参数_资源ID, 参数_类名);
}